#pragma once
#include "Vector2f.h"
#include <math.h>
#include <string>
#include <vector>
using std::vector;
using std::string;

enum eTypeShape
{
	eRectangleShape,
	eCircleShape
};

class CCollisionInfo
{
public:
	CVector2f m_collisionPoint;
	CVector2f m_collisionNormal;
};

class IShape
{

public:

	//name
	string m_name;

	//indicate if the object is a kinematic object or not
	bool m_bKinematic;

	//indicate the type of shape
	eTypeShape m_typeOfShape;

	//the frictions
	float m_dynamicFriction;
	float m_staticFriction;

	//collision ratio
	float m_collisionRatio;

	//mass of the object
	float m_mass;

	//moment of inertia of the object.
	float m_inertia;

	//position
	CVector2f m_position;
	float m_orientation;

	//state
	bool m_collision;
	bool m_resting;

	//speed
	CVector2f m_acceleration;
	CVector2f m_speed;

	//initial state
	CVector2f m_initialSpeed;
	CVector2f m_initialPosition;
	float m_initialOrientation;

	//collision point
	vector<CCollisionInfo> m_collisionInfo;

public:
	IShape(void);
	~IShape(void);
};
